{% extends "base.html" %} {% block title %}Papers · {{ app_name }}{% endblock %} {% macro paper(p) %}
| as signed on {{ p.issued_at|local('%Y-%m-%d') }}; not recomputed | |
| {{ k }} | {{ v }} |
Papers are signed by your Pup ID. Make one and every badge you hold gets its paper on the next tick.
{{ n_unpapered }} badge(s) are waiting for their paper — it lands on the next tick.
{% endif %}No papers yet.
{% endfor %}Papers from your other box. They are your history — they count toward nothing here: not XP, not your rank, not your badges, not a share card.
{% for p in case.brought %}{{ paper(p) }}{% endfor %}A key this box no longer holds signed these — the game came back from a backup without its key. They stay as history: they are not the word of the Pup ID on this box, and they never travel in pup.json. Every badge you hold gets its paper from the Pup ID this box holds.
{% for p in case.earlier %}{{ paper(p) }}{% endfor %}A countersignature says what its signer SIGNED — that they were the other party to a collar, or that a badge is dated inside their collar. It does not say they watched. A signer's kind (a person, an AI) is their own signed declaration, never something anyone checked.
{% endblock %}